package pe.gob.onpe.util;

import pe.gob.onpe.ejb.ActividadElectoral;
import pe.gob.onpe.ejb.CronogramaElectoral;
import pe.gob.onpe.ejb.InstitucionSolicitante;
import pe.gob.onpe.ejb.ListaCandidatosPostulante;
import pe.gob.onpe.ejb.OficinaDespacho;
import pe.gob.onpe.ejb.PadronElectoralSolicitante;
import pe.gob.onpe.ejb.ProcesoElectoral;
import pe.gob.onpe.ejb.RegistroLinea;
import pe.gob.onpe.ejb.Ubigeo;
import pe.gob.onpe.ejb.VistaActaEscrutinio;
import pe.gob.onpe.ejb.id.CronogramaElectoralId;
import pe.gob.onpe.ejb.id.ListaCandidatosPostulanteId;
import pe.gob.onpe.ejb.id.OficinaDespachoId;
import pe.gob.onpe.ejb.id.PadronElectoralSolicitanteId;
import pe.gob.onpe.ejb.id.RegistroLineaId;
import pe.gob.onpe.pojo.ActividadElectoralPojo;
import pe.gob.onpe.pojo.CronogramaElectoralIdPojo;
import pe.gob.onpe.pojo.CronogramaElectoralPojo;
import pe.gob.onpe.pojo.InstitucionSolicitantePojo;
import pe.gob.onpe.pojo.ListaCandidatosPostulantePojo;
import pe.gob.onpe.pojo.OficinaDespachoPojo;
import pe.gob.onpe.pojo.PadronElectoralSolicitanteIdPojo;
import pe.gob.onpe.pojo.PadronElectoralSolicitantePojo;
import pe.gob.onpe.pojo.ProcesoElectoralPojo;
import pe.gob.onpe.pojo.RegistroLineaPojo;
import pe.gob.onpe.pojo.UbigeoPojo;
import pe.gob.onpe.pojo.VistaActaEscrutinioPojo;
import pe.gob.onpe.pojo.id.ListaCandidatosPostulantePojoId;
import pe.gob.onpe.pojo.id.OficinaDespachoIdPojo;
import pe.gob.onpe.pojo.id.RegistroLineaPojoId;

public class Parser {
	public static RegistroLineaPojoId toPojo(RegistroLineaId registroLineaId) {
		if(registroLineaId==null){
			return null;
		}
		RegistroLineaPojoId id = new RegistroLineaPojoId();
		id.setNumerodocumento(registroLineaId.getNumerodocumento());
		id.setProcesoElectoralId(registroLineaId.getProcesoElectoralId());
		return id;
	}

	public static PadronElectoralSolicitantePojo toPojo(PadronElectoralSolicitante padronElectoralSolicitante) {
		if(padronElectoralSolicitante==null){
			return null;
		}
		PadronElectoralSolicitantePojo padronElectoralSolicitantePojo = new PadronElectoralSolicitantePojo();
		padronElectoralSolicitantePojo.setApellidomaterno(padronElectoralSolicitante.getApellidomaterno());
		padronElectoralSolicitantePojo.setApellidopaterno(padronElectoralSolicitante.getApellidopaterno());
		padronElectoralSolicitantePojo.setDescripcioninconsistencia(padronElectoralSolicitante.getDescripcioninconsistencia());
		padronElectoralSolicitantePojo.setEstadoinconsistencia(padronElectoralSolicitante.getEstadoinconsistencia());
		padronElectoralSolicitantePojo.setId(Parser.toPojo(padronElectoralSolicitante.getId()));
		padronElectoralSolicitantePojo.setIdinconsistencia(padronElectoralSolicitante.getIdinconsistencia());
		padronElectoralSolicitantePojo.setNombre(padronElectoralSolicitante.getNombre());
		padronElectoralSolicitantePojo.setProcesoElectoral(Parser.toPojo(padronElectoralSolicitante.getProcesoElectoral()));
		return padronElectoralSolicitantePojo;
	}

	public static ProcesoElectoralPojo toPojo(ProcesoElectoral procesoElectoral) {
		if(procesoElectoral==null){
			return null;
		}
		ProcesoElectoralPojo procesoElectoralPojo = new ProcesoElectoralPojo();
		procesoElectoralPojo.setDescripcion(procesoElectoral.getDescripcion());
		procesoElectoralPojo.setDuracionSesion(procesoElectoral.getDuracionSesion());
		procesoElectoralPojo.setEstadoproceso(procesoElectoral.getEstadoproceso());
		procesoElectoralPojo.setFechaCargaPadron(procesoElectoral.getFechaCargaPadron());
		procesoElectoralPojo.setInstitucionSolicitantePojo(Parser.toPojo(procesoElectoral.getInstitucionSolicitante()));
		procesoElectoralPojo.setNombre(procesoElectoral.getNombre());
		procesoElectoralPojo.setNumeroIntentos(procesoElectoral.getNumeroIntentos());
		procesoElectoralPojo.setProcesoElectoralId(procesoElectoral.getProcesoElectoralId());
		return procesoElectoralPojo;
	}

	public static InstitucionSolicitantePojo toPojo(InstitucionSolicitante institucionSolicitante){
		if(institucionSolicitante==null){
			return null;
		}
		InstitucionSolicitantePojo institucionSolicitantePojo = new InstitucionSolicitantePojo();
		institucionSolicitantePojo.setDescripcioninstitucion(institucionSolicitante.getDescripcioninstitucion());
		institucionSolicitantePojo.setInstitucionSolicitanteId(institucionSolicitante.getInstitucionSolicitanteId());
		institucionSolicitantePojo.setNombre(institucionSolicitante.getNombre());
		institucionSolicitantePojo.setRepresentante(institucionSolicitante.getRepresentante());
		institucionSolicitantePojo.setTelefono(institucionSolicitante.getTelefono());
		return institucionSolicitantePojo;
	}

	public static PadronElectoralSolicitanteIdPojo toPojo(PadronElectoralSolicitanteId id){
		if(id==null){
			return null;
		}
		PadronElectoralSolicitanteIdPojo padronElectoralSolicitanteIdPojo = new PadronElectoralSolicitanteIdPojo(); 
		padronElectoralSolicitanteIdPojo.setNumerodocumento(id.getNumerodocumento());
		padronElectoralSolicitanteIdPojo.setProcesoElectoralId(id.getProcesoElectoralId());
		return padronElectoralSolicitanteIdPojo;
	}

	public static RegistroLineaPojo toPojo(RegistroLinea registroLinea) {
		if(registroLinea==null){
			return null;
		}
		RegistroLineaPojo registroLineaPojo = new RegistroLineaPojo();
		registroLineaPojo.setContrasena(registroLinea.getContrasena());
		registroLineaPojo.setCorreoelectronico(registroLinea.getCorreoelectronico());
		registroLineaPojo.setDireccion(registroLinea.getDireccion());
		registroLineaPojo.setEmitiovoto(registroLinea.getEmitiovoto());
		registroLineaPojo.setEstadoinscripcion(registroLinea.getEstadoinscripcion());
		registroLineaPojo.setId(Parser.toPojo(registroLinea.getId()));
		registroLineaPojo.setNumerointentovotacion(registroLinea.getNumerointentovotacion());
		registroLineaPojo.setNumeronip(registroLinea.getNumeronip());
		registroLineaPojo.setOficinaDespacho(Parser.toPojo(registroLinea.getOficinaDespacho()));
		registroLineaPojo.setProcesoElectoral(Parser.toPojo(registroLinea.getProcesoElectoral()));
		registroLineaPojo.setUbigeo(Parser.toPojo(registroLinea.getUbigeo()));
		return registroLineaPojo;
	}

	public static UbigeoPojo toPojo(Ubigeo ubigeo) {
		UbigeoPojo ubigeoPojo = null;
		if(ubigeo!=null){
			ubigeoPojo = new UbigeoPojo();
			ubigeoPojo.setDescripcion(ubigeo.getDescripcion());
			ubigeoPojo.setUbigeo(ubigeo.getUbigeo());
			ubigeoPojo.setUbigeoPadre(Parser.toPojo(ubigeo.getUbigeoPadre()));
		}
		return ubigeoPojo;
	}

	public static OficinaDespachoPojo toPojo(OficinaDespacho oficinaDespacho) {
		if(oficinaDespacho==null){
			return null;
		}
		OficinaDespachoPojo oficinaDespachoPojo = new OficinaDespachoPojo();
		oficinaDespachoPojo.setDireccion(oficinaDespacho.getDireccion());
		oficinaDespachoPojo.setInstitucionSolicitanteId(oficinaDespacho.getId().getInstitucionSolicitanteId());
		oficinaDespachoPojo.setId(Parser.toPojo(oficinaDespacho.getId()));
		oficinaDespachoPojo.setNombre(oficinaDespacho.getNombre());
		oficinaDespachoPojo.setTelefono(oficinaDespacho.getTelefono());
		//oficinaDespacho.getRegistroLineas()
		return oficinaDespachoPojo;
	}

	public static OficinaDespachoIdPojo toPojo(OficinaDespachoId id) {
		if(id==null){
			return null;
		}
		OficinaDespachoIdPojo oficinaDespachoIdPojo =  new OficinaDespachoIdPojo();
		oficinaDespachoIdPojo.setInstitucionSolicitanteId(id.getInstitucionSolicitanteId());
		oficinaDespachoIdPojo.setOficinadespachoId(id.getOficinadespachoId());
		return oficinaDespachoIdPojo;
	}
	
	static public String stringToHex(String base){
		String base2 = (base==null)?"":base;
	    StringBuffer buffer = new StringBuffer();
	    byte[] bytes = base2.getBytes();
	    int intValue;
	    for(int x = 0; x < bytes.length; x++){
	         intValue = bytes[x]+128;
	         String temp = Integer.toHexString(intValue);
	         if(temp.length()==1){
	        	 temp = "0"+temp;
	         }
	         buffer.append(temp);
	    }
	    return buffer.toString();
	}
	
	static public String hexToString(String base){
		String resultado = "";
		byte[] byteTemp = new byte[1];
		for(int i=0;i<base.length();i=i+2){
			String temp = ""+ base.charAt(i) + base.charAt(i+1);
			int tempInt = Integer.valueOf(temp,16).intValue();
			byteTemp[0] = (byte)(tempInt-128);
			resultado = resultado+ (new String(byteTemp));
		}
		return resultado;
	}

	public static VistaActaEscrutinioPojo toPojo(VistaActaEscrutinio vistaActaEscrutinio) {
		VistaActaEscrutinioPojo vistaActaEscrutinioPojo = new VistaActaEscrutinioPojo();
		vistaActaEscrutinioPojo.setNombre(vistaActaEscrutinio.getNombre());
		vistaActaEscrutinioPojo.setProcesoElectoralId(vistaActaEscrutinio.getProcesoElectoralId());
		vistaActaEscrutinioPojo.setListaCandidatosPostulanteId(vistaActaEscrutinio.getListaCandidatosPostulanteId());
		vistaActaEscrutinioPojo.setTipoEleccionId(vistaActaEscrutinio.getTipoEleccionId());
		vistaActaEscrutinioPojo.setVotos(vistaActaEscrutinio.getVotos());
		vistaActaEscrutinioPojo.setNombrePE(vistaActaEscrutinio.getNombrePE());
		vistaActaEscrutinioPojo.setNombreTE(vistaActaEscrutinio.getNombreTE());
		vistaActaEscrutinioPojo.setNumerolistacandidato(vistaActaEscrutinio.getNumerolistacandidato());
		return vistaActaEscrutinioPojo;
	}

	public static ListaCandidatosPostulantePojo toPojo(ListaCandidatosPostulante listaCandidatosPostulante) {
		if(listaCandidatosPostulante==null){
			return null;
		}
		ListaCandidatosPostulantePojo listaCandidatosPostulantePojo = new ListaCandidatosPostulantePojo();
		
		listaCandidatosPostulantePojo.setId(Parser.toPojo(listaCandidatosPostulante.getId()));
		listaCandidatosPostulantePojo.setNombre(listaCandidatosPostulante.getNombre());
		listaCandidatosPostulantePojo.setNumeroListaCandidato(listaCandidatosPostulante.getNumerolistacandidato());
		listaCandidatosPostulantePojo.setNumeroOrdenListaCandidato(listaCandidatosPostulante.getNumeroordenlistacandidato());
		listaCandidatosPostulantePojo.setProcesoElectoralId(listaCandidatosPostulante.getProcesoElectoral().getProcesoElectoralId());
		listaCandidatosPostulantePojo.setRutaSimboloAsociado(listaCandidatosPostulante.getRutasimboloasociado());
		//listaCandidatosPostulantePojo.setTipoEleccionId(listaCandidatosPostulante.getId().);
		return listaCandidatosPostulantePojo;
	}

	public static ListaCandidatosPostulantePojoId toPojo(ListaCandidatosPostulanteId id) {
		if(id==null){
			return null;
		}
		ListaCandidatosPostulantePojoId listaCandidatosPostulantePojoId = new ListaCandidatosPostulantePojoId();
		listaCandidatosPostulantePojoId.setListacandidatospostulanteId(id.getListacandidatospostulanteId());
		listaCandidatosPostulantePojoId.setProcesoElectoralId(id.getProcesoElectoralId());
		return listaCandidatosPostulantePojoId;
	}

	public static CronogramaElectoralPojo toPojo(CronogramaElectoral cronogramaElectoral) {
		if(cronogramaElectoral==null){
			return null;
		}

		CronogramaElectoralPojo cronogramaElectoralPojo = new CronogramaElectoralPojo();
		
		cronogramaElectoralPojo.setActividadElectoral(Parser.toPojo(cronogramaElectoral.getActividadElectoral()));
		cronogramaElectoralPojo.setDescripcion(cronogramaElectoral.getDescripcion());
		cronogramaElectoralPojo.setEstadoactividad(cronogramaElectoral.getEstadoactividad());
		cronogramaElectoralPojo.setFechafinactividad(cronogramaElectoral.getFechafinactividad());
		cronogramaElectoralPojo.setFechainicioactividad(cronogramaElectoral.getFechainicioactividad());
		cronogramaElectoralPojo.setId(Parser.toPojo(cronogramaElectoral.getId()));
		cronogramaElectoralPojo.setNombre(cronogramaElectoral.getNombre());
		cronogramaElectoralPojo.setProcesoElectoral(Parser.toPojo(cronogramaElectoral.getProcesoElectoral()));
	
		return cronogramaElectoralPojo;
	}

	public static CronogramaElectoralIdPojo toPojo(CronogramaElectoralId id) {
		if(id==null){
			return null;
		}
		CronogramaElectoralIdPojo cronogramaElectoralIdPojo = new CronogramaElectoralIdPojo();
		
		cronogramaElectoralIdPojo.setActividadElectoralId(id.getActividadElectoralId());
		cronogramaElectoralIdPojo.setProcesoElectoralId(id.getProcesoElectoralId());
		
		return cronogramaElectoralIdPojo;
	}

	public static ActividadElectoralPojo toPojo(ActividadElectoral actividadElectoral) {
		if(actividadElectoral==null){
			return null;
		}
		ActividadElectoralPojo actividadElectoralPojo = new ActividadElectoralPojo();

		actividadElectoralPojo.setActividadElectoralId(actividadElectoral.getActividadElectoralId());
		actividadElectoralPojo.setDescripcion(actividadElectoral.getDescripcion());
		actividadElectoralPojo.setNombre(actividadElectoral.getNombre());
		
		return actividadElectoralPojo;
	}
	
}
